#include <iostream>

using namespace std;

int n;

 /* lowbit()函数 作用：返回 x 的最后一位 1 
      也是树状数组常用操作之一 

     实现原理 ：-x = ~x + 1;
       而 ~x 后 最后一个1后取反为0，其后的所有0（如果有的话）均变为了1
        故再 +1 后 后面所有取反后的 1 （也或者没有）会从最后一个1开始向前进位且改位的数变为 0
            直至进位到原数最后一个 1 取反后的 0 处停止向前进位。
          “ps:即使后面没有0也不会影响最后结果，只是相当于省掉了这样的一个后面的数进位恢复原数的过程”
        至此 ：从原数最后一个 1 一直到最后的数每个位置上的数都恢复到了原数，
                    而原数最后一个 1 之前的所有数都保留取反后的情况
    所有最后 x & -x 的值就是 x 的最后一位1所形成的值 
                        */
int lowbit(int x) {
    return x & -x;
}

int main() {
    cin >> n;
    while (n -- ) {
        int x, ans = 0;
        cin >> x;
        while (x) x -= lowbit(x), ans ++ ; 
      // x 每次减去二进制中最后一个 1，故循环结束后减去的次数就为 x 的二进制中 1 的个数 
        cout << ans << ' ';
    }
    cout << endl;

    return 0;
}